﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using DTO;
namespace DAO
{
    public class TinhTienDAO
    {
        // Ghi Xuong bang Tinh tien
        public void GhiXuongBangTinhTien(TinhTienDTO ttDTO,int KEY_CODE)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();
            string mySQL="";
            //Viết Câu Lệnh SQL
            if(KEY_CODE == 1) // Mua Về
            {
                mySQL = "insert into TINHTIEN(Id_Phuong_Thuc_Mua,Id_Hoa_Don,Khuyen_Mai,Tong_So_Tien,Thanh_Tien) values (1,@Id_Hoa_Don,@Khuyen_Mai,@Tong_So_Tien,@Thanh_Tien)";
            }
            else if(KEY_CODE == 2) // Ăn Tại Chỗ
            {
                mySQL = "insert into TINHTIEN(Id_Phuong_Thuc_Mua,Id_Hoa_Don,Khuyen_Mai,Tong_So_Tien,Thanh_Tien) values (2,@Id_Hoa_Don,@Khuyen_Mai,@Tong_So_Tien,@Thanh_Tien)";
            }
           

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);
            SqlParameter para;
            para = cmd.Parameters.Add("@Id_Hoa_Don", System.Data.SqlDbType.NVarChar, -1);
            para.Value = ttDTO.Id_Hoa_Don;
            para = cmd.Parameters.Add("@Khuyen_Mai", System.Data.SqlDbType.Int, -1);
            para.Value = ttDTO.Khuyen_Mai;
            para = cmd.Parameters.Add("@Tong_So_Tien", System.Data.SqlDbType.BigInt, -1);
            para.Value = ttDTO.Tong_So_Tien;
            para = cmd.Parameters.Add("@Thanh_Tien", System.Data.SqlDbType.Int, -1);
            para.Value = ttDTO.Thanh_Tien;
            // Lấy dữ liệu từ kết quả truy vấn
            cmd.ExecuteNonQuery();
            // Đóng kết nối CSDL
            myCONN.Close();
        }
        // Báo Cáo Doanh Thu Theo Ngày
        public List<TinhTienDTO> DoanhThuTheoNgay(int Ngay,int Thang,int Nam)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "";
            mySQL += "select  hd.Id_Hoa_Don,sum(tt.Thanh_Tien) ";
            mySQL += "from HOADON hd,TINHTIEN tt ";
            mySQL += "where hd.Id_Hoa_don=tt.Id_Hoa_Don  ";
            mySQL += "and DAY(hd.Ngay_Lap)=@Ngay ";
            mySQL += "and MONTH(hd.Ngay_Lap)= @Thang ";
            mySQL += "and YEAR(hd.Ngay_Lap)=@Nam ";
            mySQL += "group by hd.Id_Hoa_Don";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);

            SqlParameter para;
            // Add Gio Tu
            para = cmd.Parameters.Add("@Ngay", System.Data.SqlDbType.Int);
            para.Value = Ngay;
            // Add Gio Den
            para = cmd.Parameters.Add("@Thang", System.Data.SqlDbType.Int);
            para.Value = Thang;
            // Add Id_Loai_Mon
            para = cmd.Parameters.Add("@Nam", System.Data.SqlDbType.Int);
            para.Value = Nam;

            // Lấy dữ liệu từ kết quả truy vấn
            SqlDataReader reader = cmd.ExecuteReader();

            // Đổ dữ liệu vào danh sách đối tượng Khu Vực
            List<TinhTienDTO> listTTDTO = new List<TinhTienDTO>();
            while (reader.Read())
            {
                TinhTienDTO singleRecord = new TinhTienDTO();
                singleRecord.Id_Hoa_Don = reader.GetInt32(0);
                singleRecord.Tong_So_Tien = reader.GetInt64(1);
                listTTDTO.Add(singleRecord);
            }

            // Đóng kết nối CSDL
            myCONN.Close();

            // Trả kết quả
            return listTTDTO;
        }

        // Báo Cáo Doanh Thu Theo Tháng
        public long DoanhThuTheoThang(int Ngay, int Thang, int Nam)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "";
            mySQL += "select sum(tt.Thanh_Tien) ";
            mySQL += "from HOADON hd,TINHTIEN tt ";
            mySQL += "where hd.Id_Hoa_don=tt.Id_Hoa_Don  ";
            mySQL += "and DAY(hd.Ngay_Lap)=@Ngay ";
            mySQL += "and MONTH(hd.Ngay_Lap)= @Thang ";
            mySQL += "and YEAR(hd.Ngay_Lap)=@Nam ";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);

            SqlParameter para;
            // Add Gio Tu
            para = cmd.Parameters.Add("@Ngay", System.Data.SqlDbType.Int);
            para.Value = Ngay;
            // Add Gio Den
            para = cmd.Parameters.Add("@Thang", System.Data.SqlDbType.Int);
            para.Value = Thang;
            // Add Id_Loai_Mon
            para = cmd.Parameters.Add("@Nam", System.Data.SqlDbType.Int);
            para.Value = Nam;

            // Lấy dữ liệu từ kết quả truy vấn
            SqlDataReader reader = cmd.ExecuteReader();

            // Đổ dữ liệu vào danh sách đối tượng Khu Vực
            long DoanhThu = 0;
            while (reader.Read())
            {

                if (reader.IsDBNull(0))
                {
                    DoanhThu = 0;
                }
                else
                {
                    DoanhThu = reader.GetInt64(0);
                }
            }

            // Đóng kết nối CSDL
            myCONN.Close();

            // Trả kết quả
            return DoanhThu;
        }
        // Báo Cáo Doanh Thu Theo Năm
        public long DoanhThuTheoNam(int Thang, int Nam)
        {
            // Tạo Kết Nối CSDL
            SqlConnection myCONN = DataProvider.ConnectDB();

            //Viết Câu Lệnh SQL
            string mySQL = "";
            mySQL += "select sum(tt.Thanh_Tien) ";
            mySQL += "from HOADON hd,TINHTIEN tt ";
            mySQL += "where hd.Id_Hoa_don=tt.Id_Hoa_Don  ";
            mySQL += "and MONTH(hd.Ngay_Lap)= @Thang ";
            mySQL += "and YEAR(hd.Ngay_Lap)=@Nam ";

            // Thực hiện truy vấn
            SqlCommand cmd = new SqlCommand(mySQL, myCONN);

            SqlParameter para;
            // Add Thang
            para = cmd.Parameters.Add("@Thang", System.Data.SqlDbType.Int);
            para.Value = Thang;
            // Add Nam
            para = cmd.Parameters.Add("@Nam", System.Data.SqlDbType.Int);
            para.Value = Nam;

            // Lấy dữ liệu từ kết quả truy vấn
            SqlDataReader reader = cmd.ExecuteReader();

            // Đổ dữ liệu vào danh sách đối tượng Khu Vực
            long DoanhThu = 0;
            while (reader.Read())
            {

                if (reader.IsDBNull(0))
                {
                    DoanhThu = 0;
                }
                else
                {
                    DoanhThu = reader.GetInt64(0);
                }
            }

            // Đóng kết nối CSDL
            myCONN.Close();

            // Trả kết quả
            return DoanhThu;
        }
    }
}
